package com.lexed.jdbc.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import com.lexed.jdbc.config.Config;

// 不能被继承
public final class Datebase {
	
	// 不能实例化
	private Datebase(){}
	
	// 数据库的连接 属性 静态的唯一的私有的
	private static Connection connection = null;

	// 获取连接的方法
	public static Connection getConnection(){
		
		if(connection == null){
			try {
				// 1、加载驱动类
				Class.forName(Config.DRIVER);
				// 2、通过驱动管理器创建连接
				connection = DriverManager.getConnection(Config.URL, Config.USERNAME, Config.PASSWORD);
			} catch (Exception e) {
				// TODO: handle exception
			}
		}
	
		return connection;
	}
	
	// 获取statement的方法
	// 1、获取普通的statement
	public static Statement getStatement(){
		Statement statement = null;
		try {
			statement = getConnection().createStatement();
		} catch (Exception e) {
			// TODO: handle exception
		}
		return statement;
	}
	
	// 2、获取预编译的statement
	public static PreparedStatement getpreparedStatement(String sql) throws SQLException{
		PreparedStatement preparedStatement =  
				getConnection().prepareStatement(sql);
		return preparedStatement;
		
	}
	
	
	// 关闭方法
	public static void close(Statement statement, Connection connection, ResultSet resultSet) throws Exception{
		if(statement != null){
			statement.close();
		}
		if(connection != null){
			connection.close();
		}
		if(resultSet != null){
			resultSet.close();
		}
	}
	
	
}
